class StockService {
  // 获取股票搜索建议
  static async searchStocks(keyword) {
    try {
      console.log('【StockService】开始搜索股票，关键词：', keyword)
      
      const callResult = await wx.cloud.callFunction({
        name: 'getStockData',
        data: {
          action: 'search',
          params: { keyword }
        }
      })
      
      console.log('【StockService】云函数调用结果：', JSON.stringify(callResult))
      console.log('【StockService】云函数返回的 result：', JSON.stringify(callResult.result))
      console.log('【StockService】云函数返回的 stocks：', JSON.stringify(callResult.result?.stocks))

      const { result } = callResult
      
      if (!result) {
        console.error('【StockService】云函数返回结果为空')
        return { stocks: [] }
      }

      if (result.error) {
        console.error('【StockService】云函数返回错误：', result.error)
        throw new Error(result.error)
      }

      if (!result.stocks || !Array.isArray(result.stocks)) {
        console.warn('【StockService】云函数返回的 stocks 不是数组：', JSON.stringify(result.stocks))
        return { stocks: [] }
      }

      const mappedStocks = result.stocks.map(item => ({
        code: item.code,
        name: item.name,
        fullCode: this.getFullCode(item.code)
      }))

      console.log('【StockService】处理后的股票列表：', JSON.stringify(mappedStocks))
      return { stocks: mappedStocks }
    } catch (error) {
      console.error('【StockService】搜索股票失败，详细错误：', error)
      console.error('【StockService】错误信息：', error.message)
      console.error('【StockService】错误堆栈：', error.stack)
      return { stocks: [] }
    }
  }

  // 获取股票实时数据
  static async getStockData(code) {
    try {
      console.log('【StockService】开始获取实时数据，股票代码：', code)
      const { result } = await wx.cloud.callFunction({
        name: 'getStockData',
        data: {
          action: 'realtime',
          params: { 
            code,
            timestamp: Date.now() // 添加时间戳避免缓存
          }
        }
      })

      console.log('【StockService】实时数据返回结果：', result)

      if (result.error) {
        console.error('【StockService】获取实时数据失败：', result.error)
        throw new Error(result.error)
      }

      if (!result.data) {
        console.error('【StockService】实时数据为空')
        throw new Error('获取数据失败：数据为空')
      }

      return result.data
    } catch (error) {
      console.error('【StockService】获取股票数据失败：', error)
      throw error
    }
  }

  // 获取K线数据
  static async getKLineData(code) {
    try {
      console.log('【StockService】开始获取K线数据，股票代码：', code)
      const { result } = await wx.cloud.callFunction({
        name: 'getStockData',
        data: {
          action: 'kline',
          params: { 
            code,
            timestamp: Date.now() // 添加时间戳避免缓存
          }
        }
      })

      console.log('【StockService】K线数据返回结果：', result)

      if (result.error) {
        console.error('【StockService】获取K线数据失败：', result.error)
        throw new Error(result.error)
      }

      if (!result.data || !Array.isArray(result.data)) {
        console.error('【StockService】K线数据格式错误')
        throw new Error('获取数据失败：数据格式错误')
      }

      return result.data
    } catch (error) {
      console.error('【StockService】获取K线数据失败：', error)
      throw error
    }
  }

  // 获取完整股票代码
  static getFullCode(code) {
    if (!code) return ''
    // 深市
    if (code.startsWith('00') || code.startsWith('30')) {
      return `sz${code}`
    }
    // 沪市
    if (code.startsWith('60')) {
      return `sh${code}`
    }
    // 港股
    if (code.startsWith('9')) {
      return `hk${code}`
    }
    return code
  }
}

module.exports = StockService; 